HCS Toolbox for MATLAB

Home Downloads Manual About

Homogeneous Proportional Control (HPC)

Model of the control system:

$ \dot x={\color{blue}A}x+{\color{blue}B}(u+\gamma(t,x)), \quad x\in \mathbb{R}^n, \quad u\in \mathbb{R}^m, \quad {\color{blue}A}\in \mathbb{R}^{n\times m}, \quad {\color{blue}B}\in \mathbb{R}^{n\times m} $ where the pair $\{A,B\}$ is controllable and $\gamma:\mathbb{R}\times\mathbb{R}^{n}\mapsto \mathbb{R}^m$ is an unknown function.

Homogeneous control:

$u_{hpc}={\color{magenta}{K_0}}x+\|x\|_\mathbf{d}^{1+{\color{blue}\mu}} {\color{magenta}K}\mathbf{d}(-\ln \|x\|_\mathbf{d})x, \quad {\color{magenta}{K_0}}\in \mathbb{R}^{m \times n}, \quad {\color{magenta}K}\in \mathbb{R}^{m\times n} $

where ${\color{blue} \mu}\geq -1$, $\mathbf{d}(s)=e^{s{\color{magenta}{G_{\mathbf{d}}}}}$ is a dilation in $\mathbb{R}^n$, ${\color{magenta}{G_\mathbf{d}}}\in \mathbb{R}^{n\times n}$ and the homogeneous norm $\|x\|_\mathbf{d}$ is induced by the weighted Euclidean norm $\|x\|=\sqrt{x^{\top} {\color{magenta}P} x}$ in $\mathbb{R}^n$, ${\color{magenta}P}\in \mathbb{R}^{n\times n}$.

Properties:

$$ $$

    HPC Design    

The function $ {\color{red} { \texttt {hpc_design}} }$ computes parameters $ {\color{magenta}{ K_0,K,G_d} } $ and ${\color{magenta} P}$ of HPC for given $ {\color{blue}A} , {\color{blue}B} , {\color{blue}{\mu}}\geq -1, {\color{blue}{\rho}}>0 $ and ${\color{blue}{\gamma_{\max}}}\geq 0$
  • $ \textbf{Input parameters}: {\color{blue}A}, {\color{blue}B}, {\color{blue}\mu} $ and ${\color{blue}\rho}$ (by default $\rho=1$) and ${\color{blue}\gamma_{\max}}$ (by default $\gamma_{\max}=0$)

  • $ \textbf{Output parameters}: {\color{magenta}{K_0,K,G_d}}$ and $ {\color{magenta} P}$

$$ $$

    HPC Implementation    

  • The function $ {\color{red} { \texttt {e_hpc }} }$ $\textit{explicit}$ discretization of $u_{hpc}$

    • $\textbf{Input parameters}:$ $x$, ${\color{magenta}{K_0, K}}, {\color{blue}\mu}, {\color{magenta}{G_\mathbf{d}, P}} $

    • $\textbf{Output parameters}: u_{hpc}$

  • The function $ {\color{red} { \texttt {si_hpc }} }$ $\textit{semi-implicit} $ discretization of $u_{hpc}$

    • $\textbf{Input parameters}: $ $ h\,$ (sampling period), $ x$, ${\color{blue}{A,B}}, {\color{magenta}{K_0,K}}, {\color{blue}\mu}, {\color{magenta}{G_\mathbf{d},P}} $

    • $\textbf{Output parameters}:$ $u_{hpc}$

  • The function $ {\color{red} { \texttt {c_hpc }} } \textit{consistent} $ discretization of $u_{hpc}$ if $\gamma_{max}=0$
    • $\textbf{Input parameters}: $ $h \, $(sampling period), $x$, ${\color{blue}{A,B}}, {\color{magenta}{K_0,K}}, {\color{blue}\mu}, {\color{magenta}{G_\mathbf{d},P}}, {\color{blue}\rho}$

    • $\textbf{Output parameters}: u_{hpc}$

$$ $$ Use ${\color{red} { \texttt{demo_hpc.m}} } $ from $\texttt{HCS Toolbox} $ as a demo of HPC design

${\color{red} { \texttt{demo_hpc.m}} } $

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Example of Homogenenous Proportional Controll (HPC) design %% %% System: dx/dt=A*x+B*u, %% %% where %% x - system state vector (n x 1) %% u - control input (m x 1) %% A - system matrix (n x n) %% B - control matrix (m x m) %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%% %% Model of system %%%%%%%%%%%%%%%%%%% A= [0 1; -1 0]; % sysytem matrix (harmonic oscillator) B= [0; 1]; % control matrix n=2; m=1; %%%%%%%%%%%%%%%%%% %% HPC design %%%%%%%%%%%%%%%%%% rho=1; %convergence rate tuning parameter (larger rho, faster convergence) mu=-0.5; % the homogeneity degree % mu<0 - finite-time stability, % mu>0 - nearly fixed-time stability [K0 K Gd P]=hpc_design(A,B,mu,rho); % design of HPC %K0 - homogenization feedback gain %K - control gain %Gd - generator of dilation %P - shape matrix of the weighted Euclidean norm %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Numerical Simulation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% t=0; Tmax=5; h=0.01; % sampling period x=[1;0]; tl=[t];xl=[x];ul=[]; if mu<0 %computation of the setting time disp(['Settling Time=',num2str(hnorm(x,Gd,P)^(-mu)/(-mu*rho))]); end; noise=0.00; %magnitude of measurement noises disp('Run numerical simulation...'); [Ah, Bh]=ZOH(h,A,B); while t<Tmax xm=x+2*noise*(rand(n,1)-0.5); %u=(K0+K)*xm; %linear control (for comparison) u=e_hpc(xm,K0,K,Gd,P,mu); %explicit discretization of HPC %u=si_hpc(h,xm,A,B,K0,K,Gd,P,mu); %semi-implicit discretization of HPC %u=c_hpc(h, 2, xm, A, B, K0, K, Gd, P, mu, rho); %consistent discretization of HPC x=Ah*x+Bh*u; %%esimulation of the system t=t+h; tl=[tl t]; xl=[xl x]; ul=[ul u]; end; ul=[ul u]; disp('Done!'); %%norm of the state at the time instant Tmax disp(['||x(Tmax)||=',num2str(norm(x))]) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Plot simulation results %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% figure; axes1 = subplot(1,2,1); hold(axes1,'on'); plot1 = plot(tl,xl,'LineWidth',2,'Parent',axes1); set(plot1(1),'DisplayName','$x_1$'); set(plot1(2),'DisplayName','$x_2$'); ylabel('$x$','Interpreter','latex'); xlabel('$t$','Interpreter','latex'); title({'n=2'}); xlim(axes1,[0 Tmax]); ylim(axes1,[-2 2]); box(axes1,'on'); hold(axes1,'off'); set(axes1,'FontSize',30,'XGrid','on','YGrid','on'); legend1 = legend(axes1,'show'); set(legend1,'Interpreter','latex'); axes2 = subplot(1,2,2); hold(axes2,'on'); plot2 = plot(tl,ul,'LineWidth',2); ylabel('$u$','Interpreter','latex'); xlabel('$t$','Interpreter','latex'); title({'HPC,m=1'}); xlim(axes2,[0 Tmax]); ylim(axes2,[-5 5]); box(axes2,'on'); hold(axes2,'off'); set(axes2,'FontSize',30,'XGrid','on','YGrid','on'); $$ $$